/**
 * aui-actionsheet.js
 * @author 流浪男
 * Licensed under the MIT license.
 * http://www.opensource.org/licenses/mit-license.php
 */
(function( window, undefined ) {
	"use strict";
	var auiActionsheet = function() {
	};
	var isShow = false;
	auiActionsheet.prototype = {
		init: function(params,callback){
			this.frameBounces = params.frameBounces;
			this.title = params.title;
			this.buttons = params.buttons;
			this.cancelTitle = params.cancelTitle;
			this.destructiveTitle = params.destructiveTitle;
			this.maskDiv;
			this.actionsheetDiv;
			var self = this;
			self.open(params,callback);
		},
		open: function(params,callback) {
			var titleHtml='',buttonsHtml='',destructiveHtml='',cancelHtml='',btnHtml='';
			var self = this;
			if(self.actionsheetDiv || (!self.title && !self.buttons && !self.cancelTitle && !self.destructiveTitle))return;
			if(!self.maskDiv){
				self.maskDiv = document.createElement("div");
				self.maskDiv.className = "aui-mask";
				document.body.appendChild(self.maskDiv);
			}
			self.actionsheetDiv = document.createElement("div");
			self.actionsheetDiv.className = "aui-actionsheet";
			document.body.appendChild(self.actionsheetDiv);
			if(self.title){
				titleHtml = '<div class="aui-actionsheet-title aui-border-b aui-font-size-12">'+self.title+'</div>';
			}
			if(self.buttons && self.buttons.length){
				for(var i = 0; i < self.buttons.length;i++){
					if(i == self.buttons.length-1){
						buttonsHtml += '<div class="aui-actionsheet-btn-item">'+self.buttons[i]+'</div>';
					}else{
						buttonsHtml += '<div class="aui-actionsheet-btn-item aui-border-b">'+self.buttons[i]+'</div>';
					}
				}
			}
			if(self.destructiveTitle){
				destructiveHtml = '<div class="aui-actionsheet-btn-item aui-border-t aui-text-danger">'+self.destructiveTitle+'</div>';
			}else{
				var destructiveHtml = '';
			}
			if(self.title || (self.buttons && self.buttons.length)){
				btnHtml = '<div class="aui-actionsheet-btn">'+titleHtml+''+buttonsHtml+''+destructiveHtml+'</div>';
			}
			if(self.cancelTitle){
				cancelHtml = '<div class="aui-actionsheet-btn"><div class="aui-actionsheet-btn-item">'+self.cancelTitle+'</div></div>';
			}
			self.actionsheetDiv.insertAdjacentHTML('beforeend', btnHtml+cancelHtml);
			var actionsheetHeight = document.querySelector(".aui-actionsheet").offsetHeight;
			self.maskDiv.classList.add("aui-mask-in");
			self.actionsheetDiv.style.webkitTransform = self.actionsheetDiv.style.transform = "translate3d(0,0,0)";
			self.actionsheetDiv.style.opacity = 1;
			self.actionsheetDiv.addEventListener("touchmove", function(event){
				event.preventDefault();
			})
			self.maskDiv.addEventListener("touchmove", function(event){
				event.preventDefault();
			})
			if(typeof(api) != 'undefined' && typeof(api) == 'object' && self.frameBounces){
				api.setFrameAttr({
					bounces:false
				});
			}
			var actionsheetButtons = document.querySelectorAll(".aui-actionsheet-btn-item");
			if(actionsheetButtons && actionsheetButtons.length > 0){
				setTimeout(function(){
					self.maskDiv.onclick = function(){self.close();return;};
					for(var ii = 0; ii < actionsheetButtons.length; ii++){
						(function(e){
							actionsheetButtons[e].onclick = function(){
								if(callback){
									callback({
										buttonIndex: e+1,
										buttonTitle: this.textContent
									});
								};
								self.close();
								return;
							}
						})(ii)
					}
				}, 350)
			}
		},
		close: function(){
			var self = this;
			if(typeof(api) != 'undefined' && typeof(api) == 'object' && self.frameBounces){
				api.setFrameAttr({
					bounces:true
				});
			}
			if(self.actionsheetDiv){
				var actionsheetHeight = self.actionsheetDiv.offsetHeight;
				self.actionsheetDiv.style.webkitTransform = self.actionsheetDiv.style.transform = "translate3d(0,"+actionsheetHeight+"px,0)";
				self.maskDiv.style.opacity = 0;
				setTimeout(function(){
					if(self.maskDiv){
						self.maskDiv.parentNode.removeChild(self.maskDiv);
					}
					self.actionsheetDiv.parentNode.removeChild(self.actionsheetDiv);
					self.actionsheetDiv = self.maskDiv = false;
				}, 300)
			}
		}
	};
	window.auiActionsheet = auiActionsheet;
})(window);